﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int n = 0;
    cin >> n;
    vector<int> vec(n + 1, 0);

    for (int i = 1; i < n + 1; ++i)
    {
        cin >> vec[i];
    }

    vector<int> f(n + 1, 0);//f[i]表示从vec[1...i]中的最大值
    vector<int> g(n + 1, 0);//g[i]表示从vec[1...i]中的第二大值

    f[1] = vec[1], g[1] = 0;//只有一个数字的时候，第二大的值不存在
    for (int i = 2; i < n + 1; ++i)
    {
        f[i] = max(f[i - 1], vec[i]);//更新f[i]
        if (vec[i] >= f[i - 1])//g[i-1] f[i-1]，来了一个数字vec[i]，大于前两者，依次往前更新
        {
            g[i] = f[i - 1];
        }
        else if (vec[i] >= g[i - 1])//g[i-1] vec[i] f[i-1]，更新g[i]即可
        {
            g[i] = vec[i];
        }
        else//赋值为前面的值
        {
            g[i] = g[i - 1];
        }
    }

    int q = 0;
    cin >> q;
    while (q--)
    {
        int num = 0;
        cin >> num;
        cout << g[num] << endl;
    }

    return 0;
}

/*
链接：https://ac.nowcoder.com/acm/problem/219641
来源：牛客网

有n个果冻排成一排。第i个果冻的美味度是ai。
天使非常喜欢吃果冻，但她想把最好吃的果冻留到最后收藏。天使想知道前
x个果冻中，美味度第二大的果冻有多少美味度？
一共有q次询问。
注：如果最大的数有两个以上，默认第二大的等于最大的。例如，[2,3,4,2,4]  这个序列，第二大的数是4。

输入描述:
第一行一个正整数n。第二行n个正整数ai，用空格隔开。
第三行一个正整数q。接下来的q行，每行一个正整数x，代表一次询问。
数据范围：1≤q≤1e5，1≤ai≤1e9，2≤x≤n≤1e5
输出描述:
输出q行，每行一个正整数，代表一次询问，输出前x个果冻中美味度第二大的值。

示例1
输入
5
1 2 5 3 5
4
2
3
4
5
输出
1
2
3
5
说明
前2个数，第二大的是1。
前3个数，第二大的是2。
前4个数，第二大的是3。
前5个数，第二大的是5。
*/

